package com.foreknow.demo21;

import java.util.ArrayList;
import java.util.List;

/**
 * 集合：是一种数学的概念，表示是由一个或多个确定的元素所构成的整体。
 * 数组：
 * 1.数组在初始化的时候是固定长度的，初始化之后数组的长度是不可改变的(长度表示的就是最大的容量)
 * 2.数组中只能保存相同类型的元素(数据)，例如int[]只能保存数字不能够保存字符串
 * 3.数组中没有现成的API方法来使用，数组中只有一个length属性可以使用
 *
 * 集合(java.util包中)：就是一个容器，集合中只能存对象
 * 1.集合在初始化的时候可以不设置长度，随着元素放入集合，长度是可变的。
 * 2.集合在没有约束的情况下，可以保存任意类型的数据(只能保存对象)
 * 3.集合中提供了大量的方法，方便程序开发者操作集合
 *
 * 查看API文档：
 * Collection接口(线性集合) 子接口：List、Set
 * 1. List接口 (有序可重复)
 * 此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引（在列表中的位置）访问元素，并搜索列表中的元素。
 * 实现类：ArrayList
 * 如何使用： List list = new ArrayList();
 * 如何向集合中添加元素:  boolean	add(E e)将指定的元素添加到此列表的尾部。
 * 如何从集合中获取元素： boolean	get(int i)将指定的元素添加到此列表的尾部。
 *
 * 目前的集合中元素可以是种类型，但是这样并不是很好，所以我们要使用泛型来约束集合中的元素的类型
 * List<E> list = new ArrayList();  <E>表示一种未知的类型 根据传入的参数来决定具体的类型
 * 使用泛型的好处：不需要用强制类型转换
 *
 * 2. Set接口(无序的不可重复的集合)
 *
 * 3. Map接口(键值集合)
 */
public class Test {
  public static void main(String[] args) {
    //创建一个List集合(容器)
    List<Integer> list = new ArrayList<>();
    //添加元素
    list.add(1);
    list.add(12);
    list.add(13);
    list.add(100);

    System.out.println("集合中元素的个数为:"+list.size());
    //从集合中获取到某个元素（可以根据下标来获取）list.get()方法
    Integer ii = (Integer)list.get(0);
    //    String name  = (String)list.get(1);
    //    Double d = (Double)list.get(2);
    //    Boolean b = (Boolean)list.get(3);

    System.out.println(ii);
    //    System.out.println(name);
    //    System.out.println(d);
    //    System.out.println(b);

    System.out.println("----------------------------");
    //如何对数组进行遍历
    for(int i = 0;i<list.size();i++){
      Integer integer = list.get(i);
      System.out.println(integer);
    }

    System.out.println("----------------------------");
    //创建一个新的集合，集合中元素的类型Person类型
    List<Person> list_person = new ArrayList<>();
    Person p1 = new Person();
    p1.setId(100);
    p1.setName("tom");

    Person p2 = new Person();
    p2.setId(101);
    p2.setName("fender");
    //添加元素
    list_person.add(p1);
    list_person.add(p2);
    //遍历集合
    for(int i = 0;i<list_person.size();i++) {
      Person person =list_person.get(i);
      System.out.println(person.getId()+"--"+person.getName());
    }


  }
}
